package com.yzkj.siot.facade;

import com.yzkj.siot.base.IFacade;
import com.yzkj.siot.domain.TenantDeviceData;
import com.yzkj.siot.dto.DeviceDataDTO;
import com.yzkj.siot.vo.DeviceDataSummaryVO;

import java.util.List;

import org.springframework.scheduling.annotation.Async;

public interface DeviceDataFacade extends IFacade<TenantDeviceData, TenantDeviceData> {

    /**
     * 推送设备数据到kafka
     */
    Boolean pushData(DeviceDataDTO dto);

    /**
     * 按照不同时间间隔获取不同间隔下的数据均值
     *
     * @param timeGranularity 时间粒度
     * @param productDataId   数据解析协议Id
     * @param startTime       统计开始时间
     * @param endTime         统计结束时间
     */
    List<DeviceDataSummaryVO> querySummary(Integer timeGranularity, Integer productDataId,
                                           String startTime, String endTime);

    /**
     * 获取设备实时数据
     *
     * @param deviceId  设备Id
     * @param productId 设备所属产品Id
     */
    List<TenantDeviceData> queryListRealTime(int deviceId, int productId);

    @Async("taskExecutor")
	Boolean exportExcel(int tenantId, String sendTo,int productId, int productDataId, int deviceId);
}
